#include "recbox.h"
#include "ui_recbox.h"

RecBox::RecBox(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RecBox),
    row(1),
    col(4)
{
    ui->setupUi(this);
}

RecBox::~RecBox()
{
    delete ui;
}

void RecBox::initRecBoxUi(QJsonArray data, int row)
{
    // 如果是两⾏，说明当前RecBox是主界⾯上的supplyMusicBox
    if(row == 2)
    {
    this->row = row;
    this->col = 8;
    }
    else
    {
    // 否则：只有⼀⾏，为主界⾯上recMusicBox
    ui->recListDn->hide();
    }
    // 图⽚保存起来
    imageList = data;
    // 默认显⽰第0组
    currentIndex = 0;
    // 计算总共有⼏组图⽚，ceil表⽰向上取整
    count = ceil(imageList.size()/col);
    // 在RecBox控件添加RecBoxItem
    createRecBoxItem();
}

void RecBox::createRecBoxItem()
{
    //溢出掉之前旧元素，下半
    QList<recBoxItem*> recDownList = ui->recListDn->findChildren<recBoxItem*>();
    for(auto e : recDownList)
    {
    ui->horizontalLayout_4->removeWidget(e);
    delete e;
    }
    // 溢出掉之前旧元素，上半
    QList<recBoxItem*> recUpList = ui->recListUp->findChildren<recBoxItem*>();
    for(auto e : recUpList)
    {
    ui->horizontalLayout_3->removeWidget(e);
    delete e;
    }

    // 创建RecBoxItem对象，往RecBox中添加
    int index = 0;
    for(int i = currentIndex*col; i < col + currentIndex*col; ++i)
    {
        recBoxItem* item = new recBoxItem();
        // 设置⾳乐图⽚与对应⽂本
        QJsonObject obj = imageList[i].toObject();
        item->setText(obj.value("text").toString());
        item->setImage(obj.value("path").toString());
        // recMusicBox：col为4，元素添加到ui->ui->horizontalLayout_3中
        // supplyMuscBox: col为8， ui->ui->horizontalLayout_3t添加4个，ui->ui->horizontalLayout_4添加4个
        // 即supplyMuscBox上下两⾏都要添加
        // 如果是recMusicBox：row为1，只能执⾏else，所有4个RecBoxItem都添加到ui- >ui->horizontalLayout_3中
        // 如果是supplyMuscBox：row为2，col为8，col/2结果为4，i为0 1 2 3时，元素添加到ui->horizontalLayout_4中
        // i为4 5 6 7时，元素添加到ui->recListUpHLayout中
        if(index >= col/2 && row == 2)
        {
            ui->horizontalLayout_4->addWidget(item);
        }
        else
        {
            ui->horizontalLayout_3->addWidget(item);
        }
        ++index;
     }

    }

void RecBox::on_btUp_clicked()
{
    // 点击btUp按钮，显⽰前⼀组图⽚，如果已经是第⼀组图⽚，显⽰最后⼀组
    currentIndex--;
    if(currentIndex < 0)
    {
    currentIndex = 0;
    }
    createRecBoxItem();
}

void RecBox::on_btDn_clicked()
{
    // 点击btDown按钮，显⽰下⼀组图⽚，如果已经是最后⼀组图⽚，显⽰第0组
    currentIndex++;
    if(currentIndex >= count)
    {
    currentIndex = 0;
    }
    createRecBoxItem();
}
